{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "accelerator": "GPU",
    "colab": {
      "name": "fer2013.ipynb",
      "provenance": [],
      "collapsed_sections": [],
      "machine_shape": "hm",
      "include_colab_link": true
    },
    "kernelspec": {
      "display_name": "Environment (conda_tensorflow_p36)",
      "language": "python",
      "name": "conda_tensorflow_p36"
    },
    "language_info": {
      "codemirror_mode": {
        "name": "ipython",
        "version": 3
      },
      "file_extension": ".py",
      "mimetype": "text/x-python",
      "name": "python",
      "nbconvert_exporter": "python",
      "pygments_lexer": "ipython3",
      "version": "3.6.5"
    }
  },
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "view-in-github",
        "colab_type": "text"
      },
      "source": [
        "<a href=\"https://colab.research.google.com/github/amilkh/cs230-fer/blob/transfer-learning/Final-VGG16.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab_type": "code",
        "id": "gwdg7Sv3XBaP",
        "outputId": "1669a568-26a4-4738-9b82-619b3d9bc6a0",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 577
        }
      },
      "source": [
        "%tensorflow_version 1.x\n",
        "!pip install keras-vggface\n",
        "!pip install scikit-image\n",
        "!pip install pydot"
      ],
      "execution_count": 1,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Collecting keras-vggface\n",
            "  Downloading https://files.pythonhosted.org/packages/2f/7d/5f0319ebdc09ac1a2272364fa9583f5067b6f8aff93fbbf8835d81cbaad7/keras_vggface-0.6-py3-none-any.whl\n",
            "Requirement already satisfied: h5py in /usr/local/lib/python3.6/dist-packages (from keras-vggface) (2.8.0)\n",
            "Requirement already satisfied: pillow in /usr/local/lib/python3.6/dist-packages (from keras-vggface) (7.0.0)\n",
            "Requirement already satisfied: numpy>=1.9.1 in /usr/local/lib/python3.6/dist-packages (from keras-vggface) (1.18.1)\n",
            "Requirement already satisfied: keras in /usr/local/lib/python3.6/dist-packages (from keras-vggface) (2.2.5)\n",
            "Requirement already satisfied: scipy>=0.14 in /usr/local/lib/python3.6/dist-packages (from keras-vggface) (1.4.1)\n",
            "Requirement already satisfied: pyyaml in /usr/local/lib/python3.6/dist-packages (from keras-vggface) (3.13)\n",
            "Requirement already satisfied: six>=1.9.0 in /usr/local/lib/python3.6/dist-packages (from keras-vggface) (1.12.0)\n",
            "Requirement already satisfied: keras-applications>=1.0.8 in /usr/local/lib/python3.6/dist-packages (from keras->keras-vggface) (1.0.8)\n",
            "Requirement already satisfied: keras-preprocessing>=1.1.0 in /usr/local/lib/python3.6/dist-packages (from keras->keras-vggface) (1.1.0)\n",
            "Installing collected packages: keras-vggface\n",
            "Successfully installed keras-vggface-0.6\n",
            "Requirement already satisfied: scikit-image in /usr/local/lib/python3.6/dist-packages (0.16.2)\n",
            "Requirement already satisfied: pillow>=4.3.0 in /usr/local/lib/python3.6/dist-packages (from scikit-image) (7.0.0)\n",
            "Requirement already satisfied: networkx>=2.0 in /usr/local/lib/python3.6/dist-packages (from scikit-image) (2.4)\n",
            "Requirement already satisfied: imageio>=2.3.0 in /usr/local/lib/python3.6/dist-packages (from scikit-image) (2.4.1)\n",
            "Requirement already satisfied: PyWavelets>=0.4.0 in /usr/local/lib/python3.6/dist-packages (from scikit-image) (1.1.1)\n",
            "Requirement already satisfied: matplotlib!=3.0.0,>=2.0.0 in /usr/local/lib/python3.6/dist-packages (from scikit-image) (3.2.0)\n",
            "Requirement already satisfied: scipy>=0.19.0 in /usr/local/lib/python3.6/dist-packages (from scikit-image) (1.4.1)\n",
            "Requirement already satisfied: decorator>=4.3.0 in /usr/local/lib/python3.6/dist-packages (from networkx>=2.0->scikit-image) (4.4.2)\n",
            "Requirement already satisfied: numpy in /usr/local/lib/python3.6/dist-packages (from imageio>=2.3.0->scikit-image) (1.18.1)\n",
            "Requirement already satisfied: python-dateutil>=2.1 in /usr/local/lib/python3.6/dist-packages (from matplotlib!=3.0.0,>=2.0.0->scikit-image) (2.8.1)\n",
            "Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /usr/local/lib/python3.6/dist-packages (from matplotlib!=3.0.0,>=2.0.0->scikit-image) (2.4.6)\n",
            "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.6/dist-packages (from matplotlib!=3.0.0,>=2.0.0->scikit-image) (0.10.0)\n",
            "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.6/dist-packages (from matplotlib!=3.0.0,>=2.0.0->scikit-image) (1.1.0)\n",
            "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.6/dist-packages (from python-dateutil>=2.1->matplotlib!=3.0.0,>=2.0.0->scikit-image) (1.12.0)\n",
            "Requirement already satisfied: setuptools in /usr/local/lib/python3.6/dist-packages (from kiwisolver>=1.0.1->matplotlib!=3.0.0,>=2.0.0->scikit-image) (45.2.0)\n",
            "Requirement already satisfied: pydot in /usr/local/lib/python3.6/dist-packages (1.3.0)\n",
            "Requirement already satisfied: pyparsing>=2.1.4 in /usr/local/lib/python3.6/dist-packages (from pydot) (2.4.6)\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab_type": "code",
        "id": "2nz38mJZXN_P",
        "outputId": "72b64601-8cc5-4afe-f0cf-f72fa2ecf7c4",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 35
        }
      },
      "source": [
        "import matplotlib.pyplot as plt\n",
        "import pandas as pd\n",
        "import numpy as np\n",
        "\n",
        "import tensorflow as tf\n",
        "from tensorflow.keras.layers import *\n",
        "from tensorflow.python.lib.io import file_io\n",
        "\n",
        "%matplotlib inline\n",
        "\n",
        "import keras\n",
        "from keras import backend as K\n",
        "from keras.callbacks import ModelCheckpoint, EarlyStopping\n",
        "from keras.models import load_model\n",
        "from keras.preprocessing.image import ImageDataGenerator\n",
        "from keras_vggface.vggface import VGGFace\n",
        "from keras.utils import plot_model\n",
        "from sklearn.metrics import *\n",
        "from keras.engine import Model\n",
        "from keras.layers import Input, Flatten, Dense, Activation, Conv2D, MaxPool2D, BatchNormalization, Dropout, MaxPooling2D\n",
        "import skimage\n",
        "from skimage.transform import rescale, resize\n",
        "\n",
        "import pydot"
      ],
      "execution_count": 2,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Using TensorFlow backend.\n"
          ],
          "name": "stderr"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "1fZczU8lGkX-",
        "colab_type": "code",
        "outputId": "028e9f1b-a49c-4ed4-be4b-119b9f3b04fa",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 127
        }
      },
      "source": [
        "from google.colab import drive\n",
        "drive.mount('/content/drive')"
      ],
      "execution_count": 3,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Go to this URL in a browser: https://accounts.google.com/o/oauth2/auth?client_id=947318989803-6bn6qk8qdgf4n4g3pfee6491hc0brc4i.apps.googleusercontent.com&redirect_uri=urn%3aietf%3awg%3aoauth%3a2.0%3aoob&response_type=code&scope=email%20https%3a%2f%2fwww.googleapis.com%2fauth%2fdocs.test%20https%3a%2f%2fwww.googleapis.com%2fauth%2fdrive%20https%3a%2f%2fwww.googleapis.com%2fauth%2fdrive.photos.readonly%20https%3a%2f%2fwww.googleapis.com%2fauth%2fpeopleapi.readonly\n",
            "\n",
            "Enter your authorization code:\n",
            "··········\n",
            "Mounted at /content/drive\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab_type": "code",
        "id": "nUcd6yIGduUW",
        "outputId": "f9145844-66a9-4813-d23c-7c62c417e302",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 53
        }
      },
      "source": [
        "print(tf.__version__)\n",
        "print(keras.__version__)"
      ],
      "execution_count": 4,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "1.15.0\n",
            "2.2.5\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "v60q28mDHnN9",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "EPOCHS = 50\n",
        "BS = 128\n",
        "DROPOUT_RATE = 0.5\n",
        "FROZEN_LAYER_NUM = 19\n",
        "\n",
        "ADAM_LEARNING_RATE = 0.001\n",
        "SGD_LEARNING_RATE = 0.01\n",
        "SGD_DECAY = 0.0001\n",
        "\n",
        "Resize_pixelsize = 197"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "itKZtFV0F7b1",
        "colab_type": "code",
        "outputId": "63a0250a-7936-43b4-929e-ad6e16f33269",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 1000
        }
      },
      "source": [
        "vgg_notop = VGGFace(model='vgg16', include_top=False, input_shape=(Resize_pixelsize, Resize_pixelsize, 3), pooling='avg')\n",
        "print(vgg_notop.summary())\n",
        "last_layer = vgg_notop.get_layer('pool5').output\n",
        "x = Flatten(name='flatten')(last_layer)\n",
        "x = Dropout(DROPOUT_RATE)(x)\n",
        "x = Dense(4096, activation='relu', name='fc6')(x)\n",
        "x = Dropout(DROPOUT_RATE)(x)\n",
        "x = Dense(1024, activation='relu', name='fc7')(x)\n",
        "\n",
        "for i in range(FROZEN_LAYER_NUM):\n",
        "    vgg_notop.layers[i].trainable = False\n",
        "\n",
        "print(vgg_notop.get_layer('pool5').trainable)\n",
        "\n",
        "out = Dense(7, activation='softmax', name='classifier')(x)\n",
        "\n",
        "model = Model(vgg_notop.input, out)\n",
        "\n",
        "\n",
        "optim = keras.optimizers.Adam(lr=ADAM_LEARNING_RATE, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0)\n",
        "#optim = keras.optimizers.Adam(lr=0.0005, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0)\n",
        "sgd = keras.optimizers.SGD(lr=SGD_LEARNING_RATE, momentum=0.9, decay=SGD_DECAY, nesterov=True)\n",
        "rlrop = keras.callbacks.ReduceLROnPlateau(monitor='val_acc',mode='max',factor=0.5, patience=10, min_lr=0.00001, verbose=1)\n",
        "\n",
        "model.compile(optimizer=sgd, loss='categorical_crossentropy', metrics=['accuracy'])"
      ],
      "execution_count": 6,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:66: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n",
            "\n",
            "WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:541: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.\n",
            "\n",
            "WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:4432: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.\n",
            "\n",
            "WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:4267: The name tf.nn.max_pool is deprecated. Please use tf.nn.max_pool2d instead.\n",
            "\n",
            "Downloading data from https://github.com/rcmalli/keras-vggface/releases/download/v2.0/rcmalli_vggface_tf_notop_vgg16.h5\n",
            "58916864/58909280 [==============================] - 1s 0us/step\n",
            "WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:190: The name tf.get_default_session is deprecated. Please use tf.compat.v1.get_default_session instead.\n",
            "\n",
            "WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:197: The name tf.ConfigProto is deprecated. Please use tf.compat.v1.ConfigProto instead.\n",
            "\n",
            "WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:203: The name tf.Session is deprecated. Please use tf.compat.v1.Session instead.\n",
            "\n",
            "WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:207: The name tf.global_variables is deprecated. Please use tf.compat.v1.global_variables instead.\n",
            "\n",
            "WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:216: The name tf.is_variable_initialized is deprecated. Please use tf.compat.v1.is_variable_initialized instead.\n",
            "\n",
            "WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:223: The name tf.variables_initializer is deprecated. Please use tf.compat.v1.variables_initializer instead.\n",
            "\n",
            "Model: \"vggface_vgg16\"\n",
            "_________________________________________________________________\n",
            "Layer (type)                 Output Shape              Param #   \n",
            "=================================================================\n",
            "input_1 (InputLayer)         (None, 197, 197, 3)       0         \n",
            "_________________________________________________________________\n",
            "conv1_1 (Conv2D)             (None, 197, 197, 64)      1792      \n",
            "_________________________________________________________________\n",
            "conv1_2 (Conv2D)             (None, 197, 197, 64)      36928     \n",
            "_________________________________________________________________\n",
            "pool1 (MaxPooling2D)         (None, 98, 98, 64)        0         \n",
            "_________________________________________________________________\n",
            "conv2_1 (Conv2D)             (None, 98, 98, 128)       73856     \n",
            "_________________________________________________________________\n",
            "conv2_2 (Conv2D)             (None, 98, 98, 128)       147584    \n",
            "_________________________________________________________________\n",
            "pool2 (MaxPooling2D)         (None, 49, 49, 128)       0         \n",
            "_________________________________________________________________\n",
            "conv3_1 (Conv2D)             (None, 49, 49, 256)       295168    \n",
            "_________________________________________________________________\n",
            "conv3_2 (Conv2D)             (None, 49, 49, 256)       590080    \n",
            "_________________________________________________________________\n",
            "conv3_3 (Conv2D)             (None, 49, 49, 256)       590080    \n",
            "_________________________________________________________________\n",
            "pool3 (MaxPooling2D)         (None, 24, 24, 256)       0         \n",
            "_________________________________________________________________\n",
            "conv4_1 (Conv2D)             (None, 24, 24, 512)       1180160   \n",
            "_________________________________________________________________\n",
            "conv4_2 (Conv2D)             (None, 24, 24, 512)       2359808   \n",
            "_________________________________________________________________\n",
            "conv4_3 (Conv2D)             (None, 24, 24, 512)       2359808   \n",
            "_________________________________________________________________\n",
            "pool4 (MaxPooling2D)         (None, 12, 12, 512)       0         \n",
            "_________________________________________________________________\n",
            "conv5_1 (Conv2D)             (None, 12, 12, 512)       2359808   \n",
            "_________________________________________________________________\n",
            "conv5_2 (Conv2D)             (None, 12, 12, 512)       2359808   \n",
            "_________________________________________________________________\n",
            "conv5_3 (Conv2D)             (None, 12, 12, 512)       2359808   \n",
            "_________________________________________________________________\n",
            "pool5 (MaxPooling2D)         (None, 6, 6, 512)         0         \n",
            "_________________________________________________________________\n",
            "global_average_pooling2d_1 ( (None, 512)               0         \n",
            "=================================================================\n",
            "Total params: 14,714,688\n",
            "Trainable params: 14,714,688\n",
            "Non-trainable params: 0\n",
            "_________________________________________________________________\n",
            "None\n",
            "WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:148: The name tf.placeholder_with_default is deprecated. Please use tf.compat.v1.placeholder_with_default instead.\n",
            "\n",
            "WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:3733: calling dropout (from tensorflow.python.ops.nn_ops) with keep_prob is deprecated and will be removed in a future version.\n",
            "Instructions for updating:\n",
            "Please use `rate` instead of `keep_prob`. Rate should be set to `rate = 1 - keep_prob`.\n",
            "False\n",
            "WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/keras/optimizers.py:793: The name tf.train.Optimizer is deprecated. Please use tf.compat.v1.train.Optimizer instead.\n",
            "\n",
            "WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:3576: The name tf.log is deprecated. Please use tf.math.log instead.\n",
            "\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "v0mXUNZB-yI5",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "! rm -rf train; mkdir train\n",
        "! unzip -q '/content/drive/My Drive/cs230 project/dataset/emotion.zip' -d train\n",
        "! unzip -q '/content/drive/My Drive/cs230 project/dataset/facesdb.zip' -d train\n",
        "! unzip -q '/content/drive/My Drive/cs230 project/dataset/fer2013/train.zip' -d train\n",
        "! unzip -q '/content/drive/My Drive/cs230 project/dataset/googlesearch.zip' -d train\n",
        "! unzip -q '/content/drive/My Drive/cs230 project/dataset/googleset.zip' -d train\n",
        "! unzip -q '/content/drive/My Drive/cs230 project/dataset/jaffe.zip' -d train\n",
        "! unzip -q '/content/drive/My Drive/cs230 project/dataset/umea.zip' -d train"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "TUuN9SLX_Qvl",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "! rm -rf dev; mkdir dev\n",
        "! unzip -q '/content/drive/My Drive/cs230 project/dataset/fer2013/test-public.zip' -d dev\n",
        "! rm -rf test; mkdir test\n",
        "! unzip -q '/content/drive/My Drive/cs230 project/dataset/fer2013/test-private.zip' -d test"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "560jefnZ_Cyq",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "from tensorflow.keras.preprocessing.image import ImageDataGenerator\n",
        "\n",
        "def get_datagen(dataset, aug=False):\n",
        "    if aug:\n",
        "        datagen = ImageDataGenerator(\n",
        "                            rescale=1./255,\n",
        "                            featurewise_center=False,\n",
        "                            featurewise_std_normalization=False,\n",
        "                            rotation_range=10,\n",
        "                            width_shift_range=0.1,\n",
        "                            height_shift_range=0.1,\n",
        "                            zoom_range=0.1,\n",
        "                            horizontal_flip=True)\n",
        "    else:\n",
        "        datagen = ImageDataGenerator(rescale=1./255)\n",
        "\n",
        "    return datagen.flow_from_directory(\n",
        "            dataset,\n",
        "            target_size=(197, 197),\n",
        "            color_mode='rgb',\n",
        "            shuffle = True,\n",
        "            class_mode='categorical',\n",
        "            batch_size=BS)"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "4aQAGQP5_Gpl",
        "colab_type": "code",
        "outputId": "3af94f18-e827-44c4-bbe0-f65371203ebf",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 127
        }
      },
      "source": [
        "train_generator  = get_datagen('/content/train', True)\n",
        "dev_generator    = get_datagen('/content/dev')\n",
        "test_generator  = get_datagen('/content/test')\n"
      ],
      "execution_count": 10,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "/usr/local/lib/python3.6/dist-packages/keras_preprocessing/image/utils.py:173: UserWarning: Using \".tiff\" files with multiple bands will cause distortion. Please verify your output.\n",
            "  warnings.warn('Using \".tiff\" files with multiple bands '\n"
          ],
          "name": "stderr"
        },
        {
          "output_type": "stream",
          "text": [
            "Found 30452 images belonging to 7 classes.\n",
            "Found 3589 images belonging to 7 classes.\n",
            "Found 3589 images belonging to 7 classes.\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "GyHmZ5GRBdRl",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "from sklearn.utils import class_weight\n",
        "file_stream = file_io.FileIO('/content/drive/My Drive/cs230 project/collab/fer2013/dev.csv', mode='r')\n",
        "data = pd.read_csv(file_stream)\n",
        "data[' pixels'] = data[' pixels'].apply(lambda x: [int(pixel) for pixel in x.split()])\n",
        "X, Y = data[' pixels'].tolist(), data['emotion'].values\n",
        "class_weights = class_weight.compute_class_weight('balanced',\n",
        "                                                    np.unique(Y),\n",
        "                                                    Y)\n"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab_type": "code",
        "id": "pLISdlaStbUn",
        "outputId": "1616b9d0-a3e3-4540-9e52-012137a44bf9",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 1000
        }
      },
      "source": [
        "history = model.fit_generator(\n",
        "    generator = train_generator,\n",
        "    validation_data=dev_generator, \n",
        "    steps_per_epoch=28709// BS,\n",
        "    validation_steps=3509 // BS,\n",
        "    shuffle=True,\n",
        "    epochs=100,\n",
        "    callbacks=[rlrop],\n",
        "    use_multiprocessing=True,\n",
        ") "
      ],
      "execution_count": 12,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "WARNING:tensorflow:From /tensorflow-1.15.0/python3.6/tensorflow_core/python/ops/math_grad.py:1424: where (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n",
            "Instructions for updating:\n",
            "Use tf.where in 2.0, which has the same broadcast rule as np.where\n",
            "WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:1033: The name tf.assign_add is deprecated. Please use tf.compat.v1.assign_add instead.\n",
            "\n",
            "WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:1020: The name tf.assign is deprecated. Please use tf.compat.v1.assign instead.\n",
            "\n",
            "Epoch 1/100\n",
            "224/224 [==============================] - 267s 1s/step - loss: 1.4812 - acc: 0.4389 - val_loss: 1.1683 - val_acc: 0.5738\n",
            "Epoch 2/100\n",
            "224/224 [==============================] - 261s 1s/step - loss: 1.2183 - acc: 0.5448 - val_loss: 1.1045 - val_acc: 0.5914\n",
            "Epoch 3/100\n",
            "224/224 [==============================] - 262s 1s/step - loss: 1.1617 - acc: 0.5703 - val_loss: 1.0900 - val_acc: 0.5827\n",
            "Epoch 4/100\n",
            "224/224 [==============================] - 263s 1s/step - loss: 1.1333 - acc: 0.5815 - val_loss: 1.0612 - val_acc: 0.6034\n",
            "Epoch 5/100\n",
            "224/224 [==============================] - 275s 1s/step - loss: 1.1125 - acc: 0.5880 - val_loss: 1.0419 - val_acc: 0.6163\n",
            "Epoch 6/100\n",
            "224/224 [==============================] - 270s 1s/step - loss: 1.0946 - acc: 0.5934 - val_loss: 1.0408 - val_acc: 0.6124\n",
            "Epoch 7/100\n",
            "224/224 [==============================] - 275s 1s/step - loss: 1.0659 - acc: 0.6041 - val_loss: 1.0170 - val_acc: 0.6160\n",
            "Epoch 8/100\n",
            "224/224 [==============================] - 279s 1s/step - loss: 1.0556 - acc: 0.6071 - val_loss: 1.0417 - val_acc: 0.6076\n",
            "Epoch 9/100\n",
            "224/224 [==============================] - 278s 1s/step - loss: 1.0434 - acc: 0.6096 - val_loss: 0.9741 - val_acc: 0.6394\n",
            "Epoch 10/100\n",
            "224/224 [==============================] - 276s 1s/step - loss: 1.0308 - acc: 0.6179 - val_loss: 1.0118 - val_acc: 0.6232\n",
            "Epoch 11/100\n",
            "224/224 [==============================] - 278s 1s/step - loss: 1.0186 - acc: 0.6173 - val_loss: 0.9870 - val_acc: 0.6235\n",
            "Epoch 12/100\n",
            "224/224 [==============================] - 279s 1s/step - loss: 1.0078 - acc: 0.6230 - val_loss: 0.9989 - val_acc: 0.6301\n",
            "Epoch 13/100\n",
            "224/224 [==============================] - 278s 1s/step - loss: 0.9971 - acc: 0.6292 - val_loss: 0.9800 - val_acc: 0.6334\n",
            "Epoch 14/100\n",
            "224/224 [==============================] - 279s 1s/step - loss: 0.9822 - acc: 0.6359 - val_loss: 0.9767 - val_acc: 0.6370\n",
            "Epoch 15/100\n",
            "224/224 [==============================] - 266s 1s/step - loss: 0.9806 - acc: 0.6347 - val_loss: 0.9674 - val_acc: 0.6398\n",
            "Epoch 16/100\n",
            "224/224 [==============================] - 256s 1s/step - loss: 0.9640 - acc: 0.6422 - val_loss: 0.9614 - val_acc: 0.6382\n",
            "Epoch 17/100\n",
            "224/224 [==============================] - 254s 1s/step - loss: 0.9555 - acc: 0.6431 - val_loss: 0.9586 - val_acc: 0.6526\n",
            "Epoch 18/100\n",
            "224/224 [==============================] - 263s 1s/step - loss: 0.9537 - acc: 0.6449 - val_loss: 0.9597 - val_acc: 0.6457\n",
            "Epoch 19/100\n",
            "224/224 [==============================] - 271s 1s/step - loss: 0.9417 - acc: 0.6510 - val_loss: 0.9432 - val_acc: 0.6460\n",
            "Epoch 20/100\n",
            "224/224 [==============================] - 268s 1s/step - loss: 0.9304 - acc: 0.6548 - val_loss: 0.9569 - val_acc: 0.6544\n",
            "Epoch 21/100\n",
            "224/224 [==============================] - 265s 1s/step - loss: 0.9311 - acc: 0.6541 - val_loss: 0.9512 - val_acc: 0.6481\n",
            "Epoch 22/100\n",
            "224/224 [==============================] - 263s 1s/step - loss: 0.9098 - acc: 0.6622 - val_loss: 0.9398 - val_acc: 0.6607\n",
            "Epoch 23/100\n",
            "224/224 [==============================] - 257s 1s/step - loss: 0.9092 - acc: 0.6624 - val_loss: 0.9610 - val_acc: 0.6481\n",
            "Epoch 24/100\n",
            "224/224 [==============================] - 271s 1s/step - loss: 0.9044 - acc: 0.6621 - val_loss: 0.9245 - val_acc: 0.6646\n",
            "Epoch 25/100\n",
            "224/224 [==============================] - 287s 1s/step - loss: 0.8969 - acc: 0.6664 - val_loss: 0.9195 - val_acc: 0.6631\n",
            "Epoch 26/100\n",
            "224/224 [==============================] - 287s 1s/step - loss: 0.8866 - acc: 0.6718 - val_loss: 0.9552 - val_acc: 0.6457\n",
            "Epoch 27/100\n",
            "224/224 [==============================] - 289s 1s/step - loss: 0.8817 - acc: 0.6704 - val_loss: 0.9243 - val_acc: 0.6673\n",
            "Epoch 28/100\n",
            "224/224 [==============================] - 290s 1s/step - loss: 0.8683 - acc: 0.6803 - val_loss: 0.9352 - val_acc: 0.6589\n",
            "Epoch 29/100\n",
            "224/224 [==============================] - 283s 1s/step - loss: 0.8693 - acc: 0.6784 - val_loss: 0.9405 - val_acc: 0.6523\n",
            "Epoch 30/100\n",
            "224/224 [==============================] - 291s 1s/step - loss: 0.8635 - acc: 0.6826 - val_loss: 0.9212 - val_acc: 0.6644\n",
            "Epoch 31/100\n",
            "224/224 [==============================] - 286s 1s/step - loss: 0.8514 - acc: 0.6839 - val_loss: 0.9424 - val_acc: 0.6598\n",
            "Epoch 32/100\n",
            "224/224 [==============================] - 284s 1s/step - loss: 0.8515 - acc: 0.6814 - val_loss: 0.9283 - val_acc: 0.6658\n",
            "Epoch 33/100\n",
            "224/224 [==============================] - 282s 1s/step - loss: 0.8376 - acc: 0.6894 - val_loss: 0.9153 - val_acc: 0.6646\n",
            "Epoch 34/100\n",
            "224/224 [==============================] - 278s 1s/step - loss: 0.8320 - acc: 0.6911 - val_loss: 0.9134 - val_acc: 0.6643\n",
            "Epoch 35/100\n",
            "224/224 [==============================] - 278s 1s/step - loss: 0.8335 - acc: 0.6918 - val_loss: 0.9014 - val_acc: 0.6760\n",
            "Epoch 36/100\n",
            "224/224 [==============================] - 276s 1s/step - loss: 0.8204 - acc: 0.6949 - val_loss: 0.9460 - val_acc: 0.6592\n",
            "Epoch 37/100\n",
            "224/224 [==============================] - 272s 1s/step - loss: 0.8179 - acc: 0.6957 - val_loss: 0.8993 - val_acc: 0.6709\n",
            "Epoch 38/100\n",
            "224/224 [==============================] - 275s 1s/step - loss: 0.8035 - acc: 0.7031 - val_loss: 0.9136 - val_acc: 0.6652\n",
            "Epoch 39/100\n",
            "224/224 [==============================] - 278s 1s/step - loss: 0.7996 - acc: 0.7037 - val_loss: 0.9275 - val_acc: 0.6673\n",
            "Epoch 40/100\n",
            "224/224 [==============================] - 272s 1s/step - loss: 0.7950 - acc: 0.7045 - val_loss: 0.9176 - val_acc: 0.6706\n",
            "Epoch 41/100\n",
            "224/224 [==============================] - 273s 1s/step - loss: 0.7912 - acc: 0.7098 - val_loss: 0.9042 - val_acc: 0.6745\n",
            "Epoch 42/100\n",
            "224/224 [==============================] - 276s 1s/step - loss: 0.7838 - acc: 0.7099 - val_loss: 0.9139 - val_acc: 0.6733\n",
            "Epoch 43/100\n",
            "224/224 [==============================] - 275s 1s/step - loss: 0.7698 - acc: 0.7147 - val_loss: 0.9132 - val_acc: 0.6655\n",
            "Epoch 44/100\n",
            "224/224 [==============================] - 277s 1s/step - loss: 0.7680 - acc: 0.7146 - val_loss: 0.9145 - val_acc: 0.6687\n",
            "Epoch 45/100\n",
            "224/224 [==============================] - 282s 1s/step - loss: 0.7659 - acc: 0.7172 - val_loss: 0.9156 - val_acc: 0.6706\n",
            "\n",
            "Epoch 00045: ReduceLROnPlateau reducing learning rate to 0.004999999888241291.\n",
            "Epoch 46/100\n",
            "224/224 [==============================] - 278s 1s/step - loss: 0.7577 - acc: 0.7205 - val_loss: 0.9035 - val_acc: 0.6760\n",
            "Epoch 47/100\n",
            "224/224 [==============================] - 278s 1s/step - loss: 0.7425 - acc: 0.7261 - val_loss: 0.8989 - val_acc: 0.6787\n",
            "Epoch 48/100\n",
            "224/224 [==============================] - 278s 1s/step - loss: 0.7329 - acc: 0.7279 - val_loss: 0.9275 - val_acc: 0.6754\n",
            "Epoch 49/100\n",
            "224/224 [==============================] - 280s 1s/step - loss: 0.7406 - acc: 0.7270 - val_loss: 0.8888 - val_acc: 0.6784\n",
            "Epoch 50/100\n",
            "224/224 [==============================] - 277s 1s/step - loss: 0.7340 - acc: 0.7267 - val_loss: 0.9205 - val_acc: 0.6670\n",
            "Epoch 51/100\n",
            "224/224 [==============================] - 280s 1s/step - loss: 0.7263 - acc: 0.7341 - val_loss: 0.9131 - val_acc: 0.6769\n",
            "Epoch 52/100\n",
            "224/224 [==============================] - 276s 1s/step - loss: 0.7170 - acc: 0.7349 - val_loss: 0.9029 - val_acc: 0.6718\n",
            "Epoch 53/100\n",
            "224/224 [==============================] - 275s 1s/step - loss: 0.7240 - acc: 0.7307 - val_loss: 0.8955 - val_acc: 0.6808\n",
            "Epoch 54/100\n",
            "224/224 [==============================] - 278s 1s/step - loss: 0.7180 - acc: 0.7341 - val_loss: 0.9010 - val_acc: 0.6811\n",
            "Epoch 55/100\n",
            "224/224 [==============================] - 280s 1s/step - loss: 0.7084 - acc: 0.7402 - val_loss: 0.9100 - val_acc: 0.6718\n",
            "Epoch 56/100\n",
            "224/224 [==============================] - 279s 1s/step - loss: 0.7151 - acc: 0.7350 - val_loss: 0.9087 - val_acc: 0.6742\n",
            "Epoch 57/100\n",
            "224/224 [==============================] - 280s 1s/step - loss: 0.7044 - acc: 0.7394 - val_loss: 0.9017 - val_acc: 0.6790\n",
            "Epoch 58/100\n",
            "224/224 [==============================] - 281s 1s/step - loss: 0.7020 - acc: 0.7414 - val_loss: 0.9016 - val_acc: 0.6829\n",
            "Epoch 59/100\n",
            "224/224 [==============================] - 281s 1s/step - loss: 0.6950 - acc: 0.7453 - val_loss: 0.9054 - val_acc: 0.6759\n",
            "Epoch 60/100\n",
            "224/224 [==============================] - 280s 1s/step - loss: 0.6959 - acc: 0.7431 - val_loss: 0.9143 - val_acc: 0.6748\n",
            "Epoch 61/100\n",
            "224/224 [==============================] - 278s 1s/step - loss: 0.6908 - acc: 0.7446 - val_loss: 0.9013 - val_acc: 0.6823\n",
            "Epoch 62/100\n",
            "224/224 [==============================] - 278s 1s/step - loss: 0.6880 - acc: 0.7458 - val_loss: 0.9273 - val_acc: 0.6730\n",
            "Epoch 63/100\n",
            "224/224 [==============================] - 280s 1s/step - loss: 0.6937 - acc: 0.7436 - val_loss: 0.8934 - val_acc: 0.6898\n",
            "Epoch 64/100\n",
            "224/224 [==============================] - 283s 1s/step - loss: 0.6793 - acc: 0.7489 - val_loss: 0.9183 - val_acc: 0.6799\n",
            "Epoch 65/100\n",
            "224/224 [==============================] - 279s 1s/step - loss: 0.6899 - acc: 0.7455 - val_loss: 0.8907 - val_acc: 0.6763\n",
            "Epoch 66/100\n",
            "224/224 [==============================] - 279s 1s/step - loss: 0.6707 - acc: 0.7521 - val_loss: 0.9061 - val_acc: 0.6895\n",
            "Epoch 67/100\n",
            "224/224 [==============================] - 276s 1s/step - loss: 0.6827 - acc: 0.7506 - val_loss: 0.8908 - val_acc: 0.6769\n",
            "Epoch 68/100\n",
            "224/224 [==============================] - 270s 1s/step - loss: 0.6740 - acc: 0.7527 - val_loss: 0.9184 - val_acc: 0.6817\n",
            "Epoch 69/100\n",
            "224/224 [==============================] - 271s 1s/step - loss: 0.6720 - acc: 0.7536 - val_loss: 0.9218 - val_acc: 0.6718\n",
            "Epoch 70/100\n",
            "224/224 [==============================] - 267s 1s/step - loss: 0.6635 - acc: 0.7572 - val_loss: 0.9007 - val_acc: 0.6868\n",
            "Epoch 71/100\n",
            "224/224 [==============================] - 268s 1s/step - loss: 0.6611 - acc: 0.7588 - val_loss: 0.8952 - val_acc: 0.6895\n",
            "Epoch 72/100\n",
            "224/224 [==============================] - 272s 1s/step - loss: 0.6632 - acc: 0.7594 - val_loss: 0.9061 - val_acc: 0.6826\n",
            "Epoch 73/100\n",
            "224/224 [==============================] - 266s 1s/step - loss: 0.6675 - acc: 0.7554 - val_loss: 0.9063 - val_acc: 0.6858\n",
            "\n",
            "Epoch 00073: ReduceLROnPlateau reducing learning rate to 0.0024999999441206455.\n",
            "Epoch 74/100\n",
            "224/224 [==============================] - 263s 1s/step - loss: 0.6525 - acc: 0.7586 - val_loss: 0.9041 - val_acc: 0.6841\n",
            "Epoch 75/100\n",
            "224/224 [==============================] - 267s 1s/step - loss: 0.6463 - acc: 0.7656 - val_loss: 0.8993 - val_acc: 0.6868\n",
            "Epoch 76/100\n",
            "224/224 [==============================] - 271s 1s/step - loss: 0.6530 - acc: 0.7581 - val_loss: 0.9189 - val_acc: 0.6784\n",
            "Epoch 77/100\n",
            "224/224 [==============================] - 274s 1s/step - loss: 0.6470 - acc: 0.7630 - val_loss: 0.9108 - val_acc: 0.6838\n",
            "Epoch 78/100\n",
            "224/224 [==============================] - 273s 1s/step - loss: 0.6494 - acc: 0.7613 - val_loss: 0.8904 - val_acc: 0.6841\n",
            "Epoch 79/100\n",
            "224/224 [==============================] - 263s 1s/step - loss: 0.6377 - acc: 0.7650 - val_loss: 0.9153 - val_acc: 0.6835\n",
            "Epoch 80/100\n",
            "224/224 [==============================] - 260s 1s/step - loss: 0.6436 - acc: 0.7626 - val_loss: 0.9251 - val_acc: 0.6721\n",
            "Epoch 81/100\n",
            "224/224 [==============================] - 264s 1s/step - loss: 0.6381 - acc: 0.7684 - val_loss: 0.8768 - val_acc: 0.6934\n",
            "Epoch 82/100\n",
            "224/224 [==============================] - 257s 1s/step - loss: 0.6366 - acc: 0.7644 - val_loss: 0.9288 - val_acc: 0.6736\n",
            "Epoch 83/100\n",
            "224/224 [==============================] - 259s 1s/step - loss: 0.6393 - acc: 0.7639 - val_loss: 0.8914 - val_acc: 0.6859\n",
            "Epoch 84/100\n",
            "224/224 [==============================] - 259s 1s/step - loss: 0.6284 - acc: 0.7684 - val_loss: 0.9290 - val_acc: 0.6823\n",
            "Epoch 85/100\n",
            "224/224 [==============================] - 274s 1s/step - loss: 0.6313 - acc: 0.7681 - val_loss: 0.8921 - val_acc: 0.6910\n",
            "Epoch 86/100\n",
            "224/224 [==============================] - 277s 1s/step - loss: 0.6319 - acc: 0.7676 - val_loss: 0.9117 - val_acc: 0.6841\n",
            "Epoch 87/100\n",
            "224/224 [==============================] - 282s 1s/step - loss: 0.6361 - acc: 0.7694 - val_loss: 0.8965 - val_acc: 0.6877\n",
            "Epoch 88/100\n",
            "224/224 [==============================] - 283s 1s/step - loss: 0.6225 - acc: 0.7740 - val_loss: 0.9122 - val_acc: 0.6814\n",
            "Epoch 89/100\n",
            "224/224 [==============================] - 284s 1s/step - loss: 0.6243 - acc: 0.7723 - val_loss: 0.9073 - val_acc: 0.6838\n",
            "Epoch 90/100\n",
            "224/224 [==============================] - 285s 1s/step - loss: 0.6230 - acc: 0.7715 - val_loss: 0.9017 - val_acc: 0.6805\n",
            "Epoch 91/100\n",
            "224/224 [==============================] - 286s 1s/step - loss: 0.6352 - acc: 0.7660 - val_loss: 0.9261 - val_acc: 0.6817\n",
            "\n",
            "Epoch 00091: ReduceLROnPlateau reducing learning rate to 0.0012499999720603228.\n",
            "Epoch 92/100\n",
            "224/224 [==============================] - 281s 1s/step - loss: 0.6270 - acc: 0.7743 - val_loss: 0.9010 - val_acc: 0.6910\n",
            "Epoch 93/100\n",
            "224/224 [==============================] - 275s 1s/step - loss: 0.6196 - acc: 0.7741 - val_loss: 0.9126 - val_acc: 0.6781\n",
            "Epoch 94/100\n",
            "224/224 [==============================] - 274s 1s/step - loss: 0.6215 - acc: 0.7722 - val_loss: 0.8943 - val_acc: 0.6901\n",
            "Epoch 95/100\n",
            "224/224 [==============================] - 273s 1s/step - loss: 0.6155 - acc: 0.7756 - val_loss: 0.8957 - val_acc: 0.6871\n",
            "Epoch 96/100\n",
            "224/224 [==============================] - 274s 1s/step - loss: 0.6228 - acc: 0.7720 - val_loss: 0.9366 - val_acc: 0.6862\n",
            "Epoch 97/100\n",
            "224/224 [==============================] - 276s 1s/step - loss: 0.6188 - acc: 0.7734 - val_loss: 0.8737 - val_acc: 0.6859\n",
            "Epoch 98/100\n",
            "224/224 [==============================] - 275s 1s/step - loss: 0.6147 - acc: 0.7749 - val_loss: 0.9272 - val_acc: 0.6757\n",
            "Epoch 99/100\n",
            "224/224 [==============================] - 270s 1s/step - loss: 0.6160 - acc: 0.7767 - val_loss: 0.8895 - val_acc: 0.6949\n",
            "Epoch 100/100\n",
            "224/224 [==============================] - 274s 1s/step - loss: 0.6142 - acc: 0.7737 - val_loss: 0.9235 - val_acc: 0.6820\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "JSSv08SHF0bC",
        "colab_type": "code",
        "outputId": "df3b0590-fdfc-4c68-9140-b127fea4e193",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 71
        }
      },
      "source": [
        "print('\\n# Evaluate on dev data')\n",
        "results_dev = model.evaluate_generator(dev_generator, 3509 // BS)\n",
        "print('dev loss, dev acc:', results_dev)"
      ],
      "execution_count": 13,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "\n",
            "# Evaluate on dev data\n",
            "dev loss, dev acc: [0.9100893073611789, 0.6863425925925926]\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Ev4sDYDlOsqk",
        "colab_type": "code",
        "outputId": "d11d8882-bc2b-49f0-eb20-aa1562b19169",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 71
        }
      },
      "source": [
        "print('\\n# Evaluate on test data')\n",
        "results_test = model.evaluate_generator(test_generator, 3509 // BS)\n",
        "print('test loss, test acc:', results_test)"
      ],
      "execution_count": 14,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "\n",
            "# Evaluate on test data\n",
            "test loss, test acc: [0.8456436241114581, 0.7022569444444444]\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "m9f7smhHUQus",
        "colab_type": "code",
        "outputId": "24f0c0b2-1d35-4ee9-d804-b746a01bfae1",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 591
        }
      },
      "source": [
        "# list all data in history\n",
        "print(history.history.keys())\n",
        "# summarize history for accuracy\n",
        "plt.plot(history.history['acc'])\n",
        "plt.plot(history.history['val_acc'])\n",
        "plt.title('model accuracy')\n",
        "plt.ylabel('accuracy')\n",
        "plt.xlabel('epoch')\n",
        "plt.legend(['train', 'dev'], loc='upper left')\n",
        "plt.show()\n",
        "# summarize history for loss\n",
        "plt.plot(history.history['loss'])\n",
        "plt.plot(history.history['val_loss'])\n",
        "plt.title('model loss')\n",
        "plt.ylabel('loss')\n",
        "plt.xlabel('epoch')\n",
        "plt.legend(['train', 'dev'], loc='upper left')\n",
        "plt.show()"
      ],
      "execution_count": 15,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "dict_keys(['val_loss', 'val_acc', 'loss', 'acc', 'lr'])\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\nzLGNsBSr/nwAAAAASUVORK5CYII=\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "F-QKHTmJQhi1",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "epoch_str = '-EPOCHS_' + str(EPOCHS)\n",
        "test_acc = 'test_acc_%.3f' % results_test[1]\n",
        "model.save('/content/drive/My Drive/cs230 project/models/' + 'VGG16' + epoch_str + test_acc + '.h5')"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "5l7wFyhBEdsy",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        ""
      ],
      "execution_count": 0,
      "outputs": []
    }
  ]
}